$( document ).ready(function() {
	
	$("[data-submit='cadastrar']").click(function(){
		var existeCampoVazio = false;
		var mensagem;
		var validacaoOk;
		$("#formCadastro [data-required]").each(function(){
			if($(this).val() == ""){
				existeCampoVazio = true;
				$(this).addClass("invalido");
				if($("[data-mensagem='"+ $(this).prev().text().toLowerCase().replace(/\s+/g, '')  +"']").size() < 1){
					mensagem = "O campo '" + $(this).prev().text() + "'\u00e9 obrigat\u00f3rio";
					exibirMensagemErro($(this), mensagem);
					removerMensagensBordaErros($(this));
				}
			}
			if(!existeCampoVazio){
				validacaoOk = validaParticularidades($(this));
			}
		});
		
		if($("[data-required='senhaConfirm']").val() != $("[data-required='senha']").val()){
			validacaoOk = false;
			if($("[data-mensagem='senha']").size() < 1){
				mensagem = "A confirma\u00e7\u00e3o de senha deve ser igual a senha";
				exibirMensagemErro($("[data-required='senha']"), mensagem);
				$("[data-required='senha']").addClass("invalido");
				$("[data-required='senhaConfirm']").addClass("invalido");
				removerMensagensBordaErros($("[data-required='senha']"));
				removerMensagensBordaErros($("[data-required='senhaConfirm']"));
			}
		}
		
		
		if(existeCampoVazio || !validacaoOk){
			return;
		}
		else{
			$("#formCadastro").submit();
		}
	});
	
	
	
	//Observações:
	//O .replace(/\s+/g, '') e utilizado para se retirar o espaço do campo "Confirme sua Senha", pois nao e possivel utilizar data-mensagem="confirme sua senha"
	
	function exibirMensagemErro(self, mensagem){
		self.after("<div data-mensagem=" + self.prev().text().toLowerCase().replace(/\s+/g, '')  +">" + mensagem  +"</div>");
	}
	
	function removerMensagensBordaErros(self){
		self.focusin(function() {
			self.removeClass("invalido");
			$("div[data-mensagem='"+ self.prev().text().toLowerCase().replace(/\s+/g, '') +"']").remove();
		});
	}
	
	function validaParticularidades(self){
		var validacaoOk = true;
		var mensagem;
		var tamanhoMinimo;
		var tamanhoMaximo;
		
		switch ( self.attr("data-required") ) {
			case "nome":
				tamanhoMinimo = 3;
				tamanhoMaximo = 80;
				break;
			case "senha":
				tamanhoMinimo = 6;
				tamanhoMaximo = 20;
				break;
			case "login":
				tamanhoMinimo = 3;
				tamanhoMaximo = 40;
				break;
		}
		
		var campoAtual = "[data-mensagem='"+ self.attr("data-required")  +"']";
		if(self.val().length < tamanhoMinimo || self.val().length > tamanhoMaximo){
			if($(campoAtual).size() < 1){
				mensagem = "O campo '" + self.attr("data-required") + "' deve ter entre " + tamanhoMinimo + " e " + tamanhoMaximo + " caracteres";
				self.addClass("invalido");
				exibirMensagemErro(self, mensagem);
				removerMensagensBordaErros(self);
			}
			validacaoOk = false;
		}
		return validacaoOk;
	}
	
	function apenasLetras(){
		$("[data-required='nome']").keyup(function(){
			$(this).val($(this).val().replace(/\d+/,''));
		});
	}
	apenasLetras();
	
});